const db = uniCloud.database( )

module.exports = {
	_before: function( ) { // 通用预处理器
	},
	/**
	 * getList 获取商品列表
	 * @param {string} proId 当前商品id
	 * @returns {object} 返回商品列表数据
	 */
	async getList( proId ) {
		if ( proId ) {
			return await db.collection( "productList" ).doc( proId ).get( )
		} else {

			const result = await db.collection( 'productList' ).get( )
			return {
				errCode: 0,
				errMsg: '获取成功',
				data: result.data
			}
		}
	},

	/**
	 * add 添加商品
	 * @param {Object} data 商品对象
	 * @param {string} data.name 商品名称
	 * @param {string} data.cate_id 商品分类id
	 * @param {string} data.cover_pic 商品封面图
	 * @param {number} data.buy_price 商品售价
	 * @param {number} data.original_price 商品原价
	 * @param {number} data.discount 商品折扣
	 * @param {Array} data.sku 商品规格
	 * @param {string} role 用户角色
	 * @returns {object} 返回添加结果
	 */
	async add( data, role ) {
		if ( role !== 'admin' ) {
			return {
				errCode: -1,
				errMsg: '无权限操作'
			}
		}

		try {
			const result = await db.collection( 'productList' ).add( {
				name: data.name,
				cate_id: data.cate_id,
				cover_pic: data.cover_pic,
				buy_price: data.buy_price,
				original_price: data.original_price,
				discount: data.discount,
				sku: data.sku
			} )
			return {
				errCode: 0,
				errMsg: '添加成功',
				id: result.id
			}
		} catch ( error ) {
			return {
				errCode: -1,
				errMsg: '添加失败'
			}
		}
	},

	/**
	 * update 更新商品信息
	 * @param {Object} data 商品对象
	 * @param {string} data._id 商品id
	 * @param {string} data.name 商品名称
	 * @param {string} data.cate_id 商品分类id
	 * @param {string} data.cover_pic 商品封面图
	 * @param {number} data.buy_price 商品售价
	 * @param {number} data.original_price 商品原价
	 * @param {number} data.discount 商品折扣
	 * @param {Array} data.sku 商品规格
	 * @param {string} role 用户角色
	 * @returns {object} 返回更新结果
	 */
	async update( data, role ) {
		if ( role !== 'admin' ) {
			return {
				errCode: -1,
				errMsg: '无权限操作'
			}
		}

		try {
			await db.collection( 'productList' ).doc( data._id ).update( {
				name: data.name,
				cate_id: data.cate_id,
				cover_pic: data.cover_pic,
				buy_price: data.buy_price,
				original_price: data.original_price,
				discount: data.discount,
				sku: data.sku
			} )
			return {
				errCode: 0,
				errMsg: '更新成功'
			}
		} catch ( error ) {
			return {
				errCode: -1,
				errMsg: '更新失败'
			}
		}
	},

	/**
	 * remove 删除商品
	 * @param {string} id 商品id
	 * @param {string} role 用户角色
	 * @returns {object} 返回删除结果
	 */
	async remove( id, role ) {
		if ( role !== 'admin' ) {
			return {
				errCode: -1,
				errMsg: '无权限操作'
			}
		}

		try {
			await db.collection( 'productList' ).doc( id ).remove( )
			return {
				errCode: 0,
				errMsg: '删除成功'
			}
		} catch ( error ) {
			return {
				errCode: -1,
				errMsg: '删除失败'
			}
		}
	},
	/**
	 * updateIshd 设置商品是否为活动商品
	 * @param {string} id 商品id
	 * @param {boolean} isHd 是否为活动商品
	 * @param {string} role 用户角色
	 * @returns {object} 返回更新结果
	 */
	async updateIshd(id, isHd, role) {
		if (!id) {
			return {
				errCode: -1,
				errMsg: 'ID不能为空'
			}
		}

		try {
			// 更新商品的 is_hd 状态
			await db.collection('productList')
				.doc(id)
				.update({
					is_hd: isHd
				})

			// 获取更新后的商品信息
			const result = await db.collection('productList')
				.doc(id)
				.get()

			return {
				errCode: 0,
				errMsg: isHd ? '添加到活动成功' : '从活动移除成功',
				data: result.data[0]
			}
		} catch (error) {
			return {
				errCode: -1,
				errMsg: '操作失败'
			}
		}
	}
}